//package com.inspur.edp.bef.dtgenerator.core.entityImpl;
//
//import com.inspur.edp.bef.api.attr.AfterSaveValsAttribute;
//import com.inspur.edp.bef.bizentity.GspBizEntityObject;
//import com.inspur.edp.bef.bizentity.operation.BizAction;
//import com.inspur.edp.bef.bizentity.operation.BizOperation;
//import com.inspur.edp.bef.dtgenerator.core.BefCoreGenCtx;
//import com.inspur.edp.bef.dtgenerator.core.beActionAssemblerFactory.BEAssFactoryImplGenerator;
//import com.inspur.edp.bef.dtgenerator.core.codeRule.CodeRuleRecordGenerator;
//import com.inspur.edp.bef.dtgenerator.core.determination.BeDtmsGenCtx;
//import com.inspur.edp.bef.dtgenerator.core.determination.BeDtmsGenerator;
//import com.inspur.edp.bef.dtgenerator.core.validation.BeValidationsGenerator;
//import com.inspur.edp.bef.dtgenerator.core.validation.BeValsGenCtx;
//import com.inspur.edp.caf.generator.BaseGenerator;
//import com.inspur.edp.caf.generator.baseInfo.AnnotationInfo;
//import com.inspur.edp.caf.generator.baseInfo.AnnotationType;
//import com.inspur.edp.caf.generator.baseInfo.TypeInfo;
//import com.inspur.edp.caf.generator.method.ClassMethodGenerator;
//import com.inspur.edp.cef.gencommon.MediateType;
//import com.inspur.edp.cef.generator.coreGenerator.base.entityGenerator.determinations.DataTypeDtmsGenerator;
//import com.inspur.edp.cef.generator.coreGenerator.base.entitygen.EntityImplGenerator;
//import com.inspur.edp.cef.generator.coreGenerator.entityGenerator.entityGenerator.EntityImplGenCtx;
//import com.inspur.edp.cef.generator.coreGenerator.entityGenerator.entityGenerator.EntityImplGenerator;
//import com.inspur.edp.cef.generator.coreGenerator.entityGenerator.entityGenerator.validations.EntityValsGenerator;
//import com.inspur.edp.das.commonmodel.IGspCommonObject;
//import java.util.ArrayList;
//import java.util.HashMap;
//import lombok.var;
//import org.eclipse.jdt.core.dom.Expression;
//import org.eclipse.jdt.core.dom.TypeLiteral;
//
//
//public class BEEntityImplGenerator
//    extends EntityImplGenerator {
//
//  private static final String nameSuffix = "BizEntity";
//  private BefCoreGenCtx befCoreGenContext;
//  private boolean isRoot;
//
//  public BEEntityImplGenerator(BefCoreGenCtx coreGenContext, GspBizEntityObject beObject,
//      boolean isRoot) {
//    super(coreGenContext, beObject);
//    this.befCoreGenContext = coreGenContext;
//    this.isRoot = isRoot;
//  }
//
//
//  public static String getName(IGspCommonObject cmObject) {
//    return cmObject.getCode() + "BizEntity";
//  }
//
//
//  private BEEntityImplGenCtx getgetEntityImplContext() {
//    return (BEEntityImplGenCtx) getContext();
//  }
//
//
//  public BefCoreGenCtx getBefCoreGenCtx() {
//    return (BefCoreGenCtx) this.coreGenContext;
//  }
//
//
//  public GspBizEntityObject getBeObject() {
//    return (GspBizEntityObject) getCommonObject();
//  }
//
//
//  protected EntityImplGenCtx createEntityImplGenCtx() {
//    return new BEEntityImplGenCtx(getBefCoreGenCtx(), getBeObject());
//  }
//
//
//  protected DataTypeDtmsGenerator getDtmGenerator() {
//    return new BeDtmsGenerator(getgetEntityImplContext());
//  }
//
//
//  protected String getName() {
//    return getName(getBeObject());
//  }
//
//
//  protected String getNameSpace() {
//    return getBefCoreGenCtx().getNameSpace();
//  }
//
//
//  protected ArrayList<ClassMethodGenerator> createMethodGenerators() {
//    if (getBeObject().getBizActions().size() == 0) {
//      return null;
//    }
//
//    ArrayList<ClassMethodGenerator> rez = new ArrayList<ClassMethodGenerator>(
//        getBeObject().getBizActions().size());
//    for (BizOperation operation : getBeObject().getBizActions()) {
//      BizAction action = (BizAction) operation;
//      if (action.getIsRef()
//          || action instanceof com.inspur.edp.bef.bizentity.operation.internalbeaction.IInternalBEAction) {
//        continue;
//      }
//      rez.add(createMethodGenerator(action));
//    }
//    return rez;
//  }
//
//
//  private ClassMethodGenerator createMethodGenerator(BizAction action) {
//    return new BEImplMethodGenerator(getBefCoreGenCtx(), action, getBeObject());
//  }
//
//
//  protected ArrayList<BaseGenerator> createClassExtendChildGenrators() {
//    ArrayList<BaseGenerator> list = super.createClassExtendChildGenrators();
//    if (list == null) {
//      list = new ArrayList<BaseGenerator>();
//    }
//    list.add(new BEAssFactoryImplGenerator(getBefCoreGenCtx(), getBeObject(), this.isRoot));
//    list.add(new CodeRuleRecordGenerator(getBefCoreGenCtx(), getBeObject()));
//
//    return list;
//  }
//
//
//  protected TypeInfo setParentClass() {
//    if (this.isRoot) {
//      return new TypeInfo(com.inspur.edp.bef.spi.entity.AbstractEntity.class.getTypeName());
//    }
//    return new TypeInfo(com.inspur.edp.bef.spi.entity.AbstractChildEntity.class.getTypeName());
//  }
//
//
//  protected ArrayList<AnnotationInfo> getEntityExtendAttrbites() {
//    ArrayList<AnnotationInfo> annotationInfos = new ArrayList<AnnotationInfo>();
//    addAssemblerAttributeAnnotations(annotationInfos);
//    annotationInfos.add(getAfterLoadingDtmAttribute());
//    annotationInfos.add(getOnCancelDtmAttribute());
//    annotationInfos.add(getBeforeCheckDtmAttribute());
//    annotationInfos.add(getAfterNumberAjustedDtmAttribute());
//    annotationInfos.add(getCodeRuleAttribute());
//    annotationInfos.add(getAfterSaveValAttr());
//
//    if (this.isRoot) {
//      annotationInfos.add(getAfterQueryDtmAttribute());
//    }
//    return annotationInfos;
//  }
//
//  private AnnotationInfo getAfterSaveValAttr() {
//    AnnotationInfo tempVar = new AnnotationInfo();
//
//    var typeInfo = new TypeInfo(AfterSaveValsAttribute.class);
//    tempVar.setTypeInfo(typeInfo);
//    tempVar.setAnnotationType(AnnotationType.Normal);
//
//    HashMap<String, Expression> params = new HashMap<String, Expression>();
//    params.put("belongingTypes", getBelongingValTypeAttribute(((BeValsGenCtx)
//        getgetEntityImplContext().getValsGenCtx()).getAfterSaveValInfo()));
//    params.put("validations", getValidationAttribute(((BeValsGenCtx)
//        getgetEntityImplContext().getValsGenCtx()).getAfterSaveValInfo()));
//    params.put("childAssemblers", getChildValAttribute(((BeValsGenCtx)
//        getgetEntityImplContext().getValsGenCtx()).getAfterSaveValInfo()));
//    tempVar.setParams(params);
//
//    return tempVar;
//  }
//
//  private void addAssemblerAttributeAnnotations(ArrayList<AnnotationInfo> annotationInfos) {
//    String type = getBeObject().getGeneratedEntityClassInfo().getClassFullName();
//    AnnotationInfo tempVar = new AnnotationInfo();
//    tempVar.setAnnotationType(AnnotationType.Normal);
//    tempVar.setTypeInfo(
//        new TypeInfo(com.inspur.edp.bef.api.attr.AssemblerAttribute.class.getTypeName()));
//    HashMap<String, Expression> params = new HashMap<String, Expression>();
//    TypeLiteral typeLiteral = this.ast.newTypeLiteral();
//    typeLiteral.setType(this.ast.newSimpleType(this.ast.newName(type)));
//    params.put("assInterfaceType", typeLiteral);
//    typeLiteral = this.ast.newTypeLiteral();
//    typeLiteral.setType(this.ast
//        .newSimpleType(this.ast
//            .newName(((MediateType)
//                getBefCoreGenCtx()
//                    .getBEActionAssFactoryImplTypes()
//                    .get(getBeObject().getCode()))
//                .getFullName())));
//    params.put("assImplType", typeLiteral);
//    tempVar.setParams(params);
//  }
//
//  private AnnotationInfo getAfterLoadingDtmAttribute() {
//    AnnotationInfo tempVar = new AnnotationInfo();
//    tempVar.setTypeInfo(new TypeInfo(
//        com.inspur.edp.bef.api.attr.determination.AfterLoadingDtmAttribute.class.getTypeName()));
//    tempVar.setAnnotationType(AnnotationType.Normal);
//
//    HashMap<String, Expression> params = new HashMap<String, Expression>();
//    params.put("belongingTypes",
//
//        getBelongingDtmTypeAttribute(((BeDtmsGenCtx)
//            getgetEntityImplContext().getDtmsGenCtx()).getAfterLoadingDtmInfo()));
//    params.put("determinations",
//
//        getDeterminationAttribute(((BeDtmsGenCtx)
//            getgetEntityImplContext().getDtmsGenCtx()).getAfterLoadingDtmInfo()));
//    params.put("childAssemblers",
//
//        getChildDtmAttribute(((BeDtmsGenCtx)
//            getgetEntityImplContext().getDtmsGenCtx()).getAfterLoadingDtmInfo()));
//    tempVar.setParams(params);
//    return tempVar;
//  }
//
//  private AnnotationInfo getOnCancelDtmAttribute() {
//    AnnotationInfo tempVar = new AnnotationInfo();
//    tempVar.setTypeInfo(
//        new TypeInfo(
//            com.inspur.edp.bef.api.attr.determination.OnCancelDtmAttribute.class.getTypeName()));
//    tempVar.setAnnotationType(AnnotationType.Normal);
//
//    HashMap<String, Expression> params = new HashMap<String, Expression>();
//    params.put(
//        "belongingTypes",
//        getBelongingDtmTypeAttribute(
//            ((BeDtmsGenCtx) getgetEntityImplContext().getDtmsGenCtx()).getOnCancelDtmInfo()));
//    params.put(
//        "determinations",
//        getDeterminationAttribute(
//            ((BeDtmsGenCtx) getgetEntityImplContext().getDtmsGenCtx()).getOnCancelDtmInfo()));
//    params.put(
//        "childAssemblers",
//        getChildDtmAttribute(
//            ((BeDtmsGenCtx) getgetEntityImplContext().getDtmsGenCtx()).getOnCancelDtmInfo()));
//    tempVar.setParams(params);
//    return tempVar;
//  }
//
//  private AnnotationInfo getBeforeCheckDtmAttribute() {
//    AnnotationInfo tempVar = new AnnotationInfo();
//    tempVar.setTypeInfo(new TypeInfo(
//        com.inspur.edp.bef.api.attr.determination.BeforeCheckDtmAttribute.class.getTypeName()));
//    tempVar.setAnnotationType(AnnotationType.Normal);
//    HashMap<String, Expression> params = new HashMap<String, Expression>();
//    params.put("belongingTypes",
//        getBelongingDtmTypeAttribute(((BeDtmsGenCtx)
//            getgetEntityImplContext().getDtmsGenCtx()).getBeforeCheckDtmInfo()));
//    params.put("determinations",
//        getDeterminationAttribute(((BeDtmsGenCtx)
//            getgetEntityImplContext().getDtmsGenCtx()).getBeforeCheckDtmInfo()));
//    params.put("childAssemblers",
//        getChildDtmAttribute(((BeDtmsGenCtx)
//            getgetEntityImplContext().getDtmsGenCtx()).getBeforeCheckDtmInfo()));
//    tempVar.setParams(params);
//    return tempVar;
//  }
//
//  private AnnotationInfo getAfterQueryDtmAttribute() {
//    AnnotationInfo tempVar = new AnnotationInfo();
//    tempVar.setTypeInfo(new TypeInfo(
//        com.inspur.edp.bef.api.attr.determination.AfterQueryDtmAttribute.class.getTypeName()));
//    tempVar.setAnnotationType(AnnotationType.Normal);
//    HashMap<String, Expression> params = new HashMap<String, Expression>();
//    params.put("belongingTypes",
//
//        getBelongingDtmTypeAttribute(((BeDtmsGenCtx)
//            getgetEntityImplContext().getDtmsGenCtx()).getAfterQueryDtmInfo()));
//    params.put("determinations",
//
//        getDeterminationAttribute(((BeDtmsGenCtx)
//            getgetEntityImplContext().getDtmsGenCtx()).getAfterQueryDtmInfo()));
//    params.put("childAssemblers",
//
//        getChildDtmAttribute(((BeDtmsGenCtx)
//            getgetEntityImplContext().getDtmsGenCtx()).getAfterQueryDtmInfo()));
//    tempVar.setParams(params);
//    return tempVar;
//  }
//
//  private AnnotationInfo getCodeRuleAttribute() {
//    AnnotationInfo tempVar = new AnnotationInfo();
//    tempVar.setTypeInfo(
//        new TypeInfo(com.inspur.edp.cef.api.attr.CodeRuleInfoAttribute.class.getTypeName()));
//    tempVar.setAnnotationType(AnnotationType.Normal);
//    HashMap<String, Expression> params = new HashMap<String, Expression>();
//    TypeLiteral typeLiteral = this.ast.newTypeLiteral();
//    typeLiteral.setType(this.ast
//        .newSimpleType(this.ast
//            .newName(((MediateType) this.befCoreGenContext
//
//                .getCodeRuleImpType()
//                .get(getBeObject().getCode()))
//                .getFullName())));
//    params.put("type", typeLiteral);
//    tempVar.setParams(params);
//    return tempVar;
//  }
//
//  private AnnotationInfo getAfterNumberAjustedDtmAttribute() {
//    AnnotationInfo tempVar = new AnnotationInfo();
//    tempVar.setTypeInfo(new TypeInfo(
//        com.inspur.edp.bef.api.attr.determination.AfterNumberAjustedDtmAttribute.class
//            .getTypeName()));
//    tempVar.setAnnotationType(AnnotationType.Normal);
//    HashMap<String, Expression> params = new HashMap<String, Expression>();
//    params.put("belongingTypes",
//
//        getBelongingDtmTypeAttribute(((BeDtmsGenCtx)
//            getgetEntityImplContext().getDtmsGenCtx())
//            .getAfterNumberAjustedDtmInfo()));
//    params.put("determinations",
//
//        getDeterminationAttribute(((BeDtmsGenCtx)
//            getgetEntityImplContext().getDtmsGenCtx())
//            .getAfterNumberAjustedDtmInfo()));
//    params.put("childAssemblers",
//
//        getChildDtmAttribute(((BeDtmsGenCtx)
//            getgetEntityImplContext().getDtmsGenCtx())
//            .getAfterNumberAjustedDtmInfo()));
//    tempVar.setParams(params);
//    return tempVar;
//  }
//
//
//  protected EntityValsGenerator getEntityValGenerator() {
//    return new BeValidationsGenerator(getgetEntityImplContext());
//  }
//
//
//  protected EntityImplGenerator createChildEntityImplGenerators(IGspCommonObject childObject) {
//    return new BEEntityImplGenerator(this.befCoreGenContext,
//        (GspBizEntityObject) ((childObject instanceof GspBizEntityObject) ? childObject : null),
//        false);
//  }
//}
